# 1.编程实现尼姆游戏。该游戏是一个著名的游戏，有很多变种玩法。
# 现游戏玩法：人机大战，首先随机生成一个正整数（充当一堆物品），
# 由人先从一堆物品中拿走一部分物品，然后由机器拿物品，依次类推，拿走最后一个物品的玩家输掉游戏。
# 拿物品的规则是玩家可以自由选择拿走多少物品，但拿走的物品最多只能拿走一半物品。
# 参考源代码：
from random import randint  # randint用于生成正数类型随机数

n = randint(20, 100)        # 20<=n<=100,生成物品个数
print("游戏规则:目前共有{0}件物品,每回合你可以拿走至多一半的物品,"
      "然后电脑也将取走一部分物品,拿走最后一个物品将使你输掉本局游戏".format(n))
while n > 1:                # 当电脑取完是1时不满足条件退出循环,玩家败北
    # 人类玩家先走
    print("该你拿了，现在剩余物品数量为：{0}".format(n))

    # 确保人类玩家输入合法整数值
    while True:
        try:
            num = int(input('输入你要拿走的物品数量：'))
            # 确保拿走的物品数量不超过一半
            assert 1 <= num <= n // 2
            break
        except Exception as result:
            print('最少必须拿走1个，最多可以拿走{0}个,您输入的数据必须是整数。'.format(n // 2), result)

    n -= num                # 玩家取走物品后物品余量
    if n == 1:
        print('恭喜,你赢了！')
        break
    # 计算机玩家随机拿走一些，randint()用来生成指定范围内的一个随机数
    robotGet = randint(1, n // 2)
    n -= robotGet
else:
    print('哈哈，你输了。')
